package com.test.application.baiduORC.controller;

import com.baidu.aip.ocr.AipOcr;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Iterator;

/**
 * 百度文字识别
 * 作者: yanruizhi
 * 时间: 2023/10/23 14:36
 */
@RestController
@RequestMapping("orc")
public class BaiduOrcController {
    @Resource
    private AipOcr aipOcr;

    @PostMapping("idCard")
    public String idCard(String idCardImagePath) {

        // 传入可选参数调用接口
        HashMap<String, String> options = new HashMap<>();
        options.put("detect_direction", "true");//检查图片朝向。默认false不检测
        options.put("detect_risk", "true");//是否开启身份证类型检测功能(类型为身份证复印件、临时身份证、身份证翻拍、修改过的身份证)，默认false不开启
        String idCardSide = "front";//身份证含照片一面
        //        String idCardSide = "back";//身份证含国徽一面
        //本地图片识别，返回JSON对象
        JSONObject jsonObject = aipOcr.idcard(idCardImagePath, idCardSide, options);


        System.out.println(jsonObject);
        //获取到我们需要的信息
        JSONObject result = jsonObject.getJSONObject("words_result");

        //获取迭代器，
        Iterator<String> iterator = result.keys();
        while (iterator.hasNext()) {
            //获取键和值
            String key = iterator.next();
            String value = result.getJSONObject(key).getString("words");
            //打印识别结果
            System.out.println(key + " : " + value);
        }

//        return jsonObject.toString();
        return jsonObject.toString();
    }
    @PostMapping("general")
    public String general(String path) {
        /*
         * 通用文字识别
         * */
        // 传入可选参数调用接口
        HashMap<String, String> options = new HashMap<>();
        options.put("language_type", "CHN_ENG");//识别语言类型，默认为中英文混合
        options.put("detect_direction", "true");//是否检查图片朝向，默认false不检查
        options.put("detect_language", "true");//是否检查语言，默认false不检查
        options.put("probability", "true");//是否返回识别结果中每一行的置信度

        // 调用接口，返回JSON格式数据
        JSONObject jsonObject = aipOcr.basicGeneral(path, options);
        System.out.println(jsonObject);
        //获取JSON对象里提取图片文字信息数组
        JSONArray jsonArray = jsonObject.getJSONArray("words_result");
        //循环打印信息
        for (int i = 0; i < jsonArray.length(); i++) {
            System.out.println(jsonArray.getJSONObject(i).get("words"));
        }
        return jsonArray.toString();
    }
    //营业执照扫描
    @PostMapping("businessLicense")
    public String businessLicense(String path) {
        // 传入可选参数调用接口
        HashMap<String, String> options = new HashMap<String, String>();
//        options.put("language_type", "CHN_ENG");//识别语言类型，默认为中英文混合
//        options.put("detect_direction", "true");//是否检查图片朝向，默认false不检查
//        options.put("detect_language", "true");//是否检查语言，默认false不检查
//        options.put("probability", "true");//是否返回识别结果中每一行的置信度
        // 调用接口，返回JSON格式数据
        JSONObject jsonObject = aipOcr.businessLicense(path, options);
        System.out.println(jsonObject);
        //获取JSON对象里提取图片文字信息数组
//        JSONArray jsonArray = jsonObject.getJSONArray("words_result");
        //循环打印信息
//        for (int i = 0; i < jsonArray.length(); i++) {
//            System.out.println(jsonArray.getJSONObject(i).get("words"));
//        }
        return jsonObject.toString();
    }

}
